/**
 * 封装小程序全局请求方法
 */
import request from 'wechat-http'

// 接口基础地址
const baseURL = 'https://live-api.itheima.net'
request.baseURL = baseURL


// 请求拦截器
request.intercept.request = (params) => {
  // console.log('请求参数：', params)
  // == 统一给请求头添加token ==
  const { token } = getApp()
  if (token) {
    params.header = {
      Authorization: token
    }
    // console.log(params)
  }
  // 返回请求的参数
  return params
}

// 响应拦截器 => 获取后台返回数据=》返回给页面
// 场景：简化后台返回给页面的数据
request.intercept.response = ({ data, statusCode }) => {
  // console.log(statusCode) // http 响应状态码
  // console.log(config) // 发起请求时的参数
  // == 通过拦截器统一处理接口错误提示 ==
  if (data.code !== 1e4) {
    // 错误提示
    setTimeout(() => {
      wx.utils.toast(data.message, 'none')
    }, 1000);
    // 处理token失效
    if (statusCode === 401) {
      // 读取当前历史栈
      const pageStack = getCurrentPages()
      // 取出当前页面路径，登录成功能跳转到该页面
      const currentPage = pageStack[pageStack.length - 1]
      // 取出当前页面路径，登录成功能跳转到该页面
      // const redirectURL = currentPage.route
      // == 处理页面参数 ==
      const params = currentPage.options
      let redirectURL = currentPage.route + wx.utils.convertToQueryParams(params)
      // const keys = Object.keys(params)
      // if (keys.length > 0) {
      //   redirectURL += '?'
      //   keys.forEach((key, i) => {
      //     const val = params[key];
      //     redirectURL += `${key}=${val}`
      //     if ((i + 1) !== keys.length) {
      //       redirectURL += '&'
      //     }
      //   })

      // }
      console.log('401页面：', currentPage, redirectURL)

      // 引导用户到登录页面
      wx.redirectTo({
        url: `/pages/login/index?redirectUrl=/${encodeURIComponent(redirectURL)}`,
      })
    }


    // 抛出Promise错误
    return Promise.reject(data)
  }


  // 拦截器处理后的响应结果
  return data
}

// 挂载到wx全局对象上
// 注意：wx.request 已经存在不可修改
wx.http = request
wx.baseURL = baseURL